<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <style>
    
  </style>
</head>
<body>
  
</body>
<script>

  // 字符
  // var msg = "365";
  // console.log(msg);
  // console.log(typeof msg);

  // var msg = "hello";
  // console.log(msg);
  // console.log(typeof msg);

  // var msg = "";
  // console.log(msg);
  // console.log(typeof msg);

  // var msg = "hello123";
  // console.log(msg);
  // console.log(typeof msg);

  // var msg = "123hello";
  // console.log(msg);
  // console.log(typeof msg);
  
  // var msg = "123.678";
  // console.log(msg);
  // console.log(typeof msg);

  // var msg = false;
  // console.log(msg);
  // console.log(typeof msg);
  
  // var msg = {name:"admin"};
  // console.log(msg);
  // console.log(typeof msg);

  // var msg = ["5",5,6,7];
  // console.log(msg);
  // console.log(typeof msg);

  // var msg = function(){ console.log(1) };
  // console.log(msg);
  // console.log(typeof msg);

  // var msg = undefined;
  // console.log(msg);
  // console.log(typeof msg);

  // var msg = null;
  // console.log(msg);
  // console.log(typeof msg);

  // var result = parseInt(msg);
  // console.log(result);
  // console.log(typeof result);


  // 数值：非空字符第一个字符能转成数值，非空数组第一个数据能转成数值

  // NaN：undefined，null，对象，函数，布尔，空数组，非空数组但第一个数据不能转成数值，空字符，非空字符的第一个字符不能转成数值

  
  // parseInt：取整
  // parseInt不能识别小数点
  // 从左向右检测，能转则转，不能转，停止；如果第一位就不能转，直接NaN
  
  // parseFloat：取小数
  // parseFloat能识别小数点
  // 从左向右检测，能转则转，不能转，停止；如果第一位就不能转，直接NaN

  // console.log( parseFloat( "365" ) );
  // console.log( parseFloat( "abc365" ) );
  // console.log( parseFloat( "365abc" ) );
  // console.log( parseFloat( "365.789" ) );
  // console.log( parseFloat( true ) );
  // console.log( parseFloat( false ) );
  // console.log( parseFloat( {} ) );
  // console.log( parseFloat( {name:"admin"} ) );
  // console.log( parseFloat( [] ) );
  // console.log( parseFloat( ["4",5,6] ) );
  // console.log( parseFloat( ["hello",5,6] ) );
  // console.log( parseFloat( function(){} ) );
  // console.log( parseFloat( undefined ) );
  // console.log( parseFloat( null ) );

  // ========

  // console.log( Math.round( "365" ) )
  // console.log( Math.round( "365.789" ) )
  // console.log( Math.round( "abc365.789" ) )
  // console.log( Math.round( "365.789abc" ) )
  // console.log( Math.round( true ) )
  // console.log( Math.round( false ) )
  // console.log( Math.round( {} ) )
  // console.log( Math.round( {name:"admin"} ) )
  // console.log( Math.round( [] ) )
  // console.log( Math.round( ["5"] ) )
  // console.log( Math.round( ["5",6,7] ) )
  // console.log( Math.round( ["hello",6,7] ) )
  // console.log( Math.round( function(){} ) )
  // console.log( Math.round( undefined ) )
  // console.log( Math.round( null ) )

  // 四舍五入取整
  // 字符：只要出现非数值，就是NaN
  // true为1，false为0
  // 对象，函数，undefined，为NaN
  // 空数组，为0
  // 数组：有且只有一个能直接转成数值的数据，就是该数值，否则都是NaN
  // null，为0

  // =======

  // console.log( Number( "365" ) )
  // console.log( Number( "365.789" ) )
  // console.log( Number( "365.789abc" ) )
  // console.log( Number( "abc365.789" ) )
  // console.log( Number( true ) )
  // console.log( Number( false ) )
  // console.log( Number( {} ) )
  // console.log( Number( {name:"admin"} ) )
  // console.log( Number( [] ) )
  // console.log( Number( ["5"] ) )
  // console.log( Number( ["5",67,99] ) )
  // console.log( Number( function(){} ) )
  // console.log( Number( undefined ) )
  // console.log( Number( null ) )

  // 能识别小数
  // 参考Math.round()







  // 数值：非空字符第一个字符能转成数值，非空数组第一个数据能转成数值

  // NaN：undefined，null，对象，函数，布尔，空数组，非空数组但第一个数据不能转成数值，空字符，非空字符的第一个字符不能转成数值
  
  // parseInt：取整
  // parseInt不能识别小数点
  // 从左向右检测，能转则转，不能转，停止；如果第一位就不能转，直接NaN
  
  // parseFloat：取小数
  // parseFloat能识别小数点
  // 从左向右检测，能转则转，不能转，停止；如果第一位就不能转，直接NaN


  // Math.round()和Number()
  // 四舍五入取整
  // 字符：只要出现非数值，就是NaN
  // true为1，false为0
  // 对象，函数，undefined，为NaN
  // 空数组，为0
  // 数组：有且只有一个能直接转成数值的数据，就是该数值，否则都是NaN
  // null，为0



</script>
</html>